# -*- coding: utf-8 -*-
"""
@Time    : 2024/6/28 16:42 
@Author  : ZhangShenao 
@File    : closure.py
@Desc    : 闭包——函数作为返回值
"""


# 定义外层函数,返回闭包Closure
def print_word(word: str):
    # 定义闭包函数
    def repeat(times: int):
        return word * times

    # 返回闭包函数
    return repeat


# 调用外层函数,得到闭包函数
# 传入到外层函数中的参数值'hello'会一直保持在闭包中
closure_func = print_word('hello')
# closure_func是一个函数,是print_word内部的repeat函数
print(closure_func)  # <function print_word.<locals>.repeat at 0x100b94220>
# 调用闭包函数,得到最终返回值
result = closure_func(3)
print(result)
